package com.java.tutorials.jdk7.asynchronouschannel;

import java.nio.ByteBuffer;
import java.nio.channels.AsynchronousFileChannel;
import java.nio.channels.CompletionHandler;
import java.nio.file.Path;
import java.nio.file.Paths;
/**
 * Created by xuzhike on 2016/1/20.
 * http://www.java2s.com/Code/Java/JDK-7/UsingAsynchronousFileChannelandCompletionHandlertoreadafile.htm
 * Using AsynchronousFileChannel and CompletionHandler to read a file
 */
public class AsynchronousFileChannelWithCompletionHandler {
    public static final String FILE="E:\\OpenSources\\MyProjects\\javaTutorials\\src\\main\\java\\com\\java\\tutorials\\jdk7\\asynchronouschannel\\test.txt";
    public static void main(String[] args) throws Exception {

        Path file = Paths.get(FILE);
        AsynchronousFileChannel channel = AsynchronousFileChannel.open(file);

        ByteBuffer buffer = ByteBuffer.allocate(100_000);

        channel.read(buffer, 0, buffer,
                new CompletionHandler<Integer, ByteBuffer>() {
                    public void completed(Integer result, ByteBuffer attachment) {
                        System.out.println("Bytes read 999 [" + result + "]");
                    }

                    public void failed(Throwable exception, ByteBuffer attachment) {
                        System.out.println(exception.getMessage());
                    }
                });
    }
}
